<?php
/**
* @version		1.0 : select.php marum56
* @package		Joomla
*/

// Check to ensure this file is included in Joomla!
defined('_JEXEC') or die( 'Restricted access' );


/**
 * HTML View class for the Select component
 *
 * @static
 * @package	Joomla
 * @subpackage	Select
 * @since 1.0
 */
class msSelect
{
	 /** 
	 * Metoda tworzy listę selekt regionów
	 *
	 * @access 	public
	 * @param 	string 	$name     Nazwa kontrolki
	 * @param 	string 	$default  Domyślna wartość kontrolki
	 * @param 	boolean $onchange true/false - po zmianie "selekta" wysyła/nie wysyła formularz
	 * @param 	string  $value 	  wartość zwracana przez kontrolkę
	 * @return 	string 	Kod HTML kontrolki select
	 */
	function Region($name, $default='', $onchange=false, $value='n_reg')
	{       
		$default = trim($default);
		$onchange = $onchange ? 'onchange="document.adminForm.submit( );"' : '';

		$db =& JFactory::getDBO();
	
		$query = 'SELECT '.$value.' AS value, n_reg AS text'
		. ' FROM #__regiony AS a'
		. ' WHERE a.registerDate = (SELECT max(registerDate) 
		                            FROM #__regiony
                                            WHERE nrr = a.nrr)'
                . 'AND a.del = 0'
                . ' ORDER BY text'
 		;
		$db->setQuery( $query );
		$reg[] = JHTML::_('select.option',  '', '- Wybierz region -' );
		foreach( $db->loadObjectList() as $obj ) {
			$reg[] = JHTML::_('select.option',  $obj->value, $obj->text );
		}
		return JHTML::_('select.genericlist_txt',   $reg, $name, 'class="inputbox" size="1"'.$onchange, 'value', 'text', $default);
	}
	
	 /** 
	 * Metoda tworzy listę selekt spółek
	 *
	 * @access 	public
	 * @param 	string 	$name     Nazwa kontrolki
	 * @param 	string 	$default  Domyślna wartość kontrolki
	 * @param 	boolean $onchange true/false - po zmianie "selekta" wysyła/nie wysyła formularz
	 * @param 	string  $value 	  wartość zwracana przez kontrolkę
	 * @return 	string 	Kod HTML kontrolki select
	 */
	function Spolka($name, $default='', $onchange=false, $value='spolka', $check_default='txt', $textPoczatkowy='Wybierz spółkę')
	{       
		$default = trim($default);
		$onchange = $onchange ? 'onchange="document.adminForm.submit( );"' : '';
		
		$db =& JFactory::getDBO();		
		
		$query = 'SELECT '.$value.' AS value, spolka AS text'
		. ' FROM #__spolka'
		. ' ORDER BY text'
 		;
		$db->setQuery( $query );
		$spolka[] = JHTML::_('select.option',  '', '- '.$textPoczatkowy.' -' );
		foreach( $db->loadObjectList() as $obj ) {
			// W nazwie spółki występuje cudzysłów - dlatego zastosowano htmlspecialchars()
			$spolka[] = JHTML::_('select.option',  htmlspecialchars($obj->value), htmlspecialchars($obj->text ) );
		}
		if ($check_default == 'txt') 
			return JHTML::_('select.genericlist_txt', $spolka, $name, 'class="inputbox" size="1"'.$onchange, 'value', 'text', htmlspecialchars($default));
		else
			return JHTML::_('select.genericlist', $spolka, $name, 'class="inputbox" size="1"'.$onchange, 'value', 'text', htmlspecialchars($default));
	}
	
	 /** 
	 * Metoda tworzy listę selekt userów dowolnych grup
	 *
	 * @access 	public
	 * @param 	string 	$name Nazwa kontrolki
	 * @param 	string 	$default Domyślna wartość kontrolki
	 * @param 	string 	$grup Określa którą grupę userów wylistujemy
	 *                              17 - Pracownik biurowy
	 *				18 - Uzytkownik samochodu
	 *				19 - Kierownik obiektu
	 *				20 - Kadry
	 *				21 - Księgowość
	 *				22 - Kierownik regionu
	 *				23 - Serwis
	 *				24 - Zarząd
	 *				25 - Administrator
	 *                              np. $grup określony: 'gid = 22' ozn. wylistowanie grupy kier. reg.
	 *				Grupy można łączyć np. 'gid = 22 OR gid = 19' ozn. grupy kier. reg. i obiektu
	 * @param 	boolean $onchange true/false - po zmianie "selekta" wysyła/nie wysyła formularz
	 * @param 	string  $value 	  wartość zwracana przez kontrolkę
	 * @return 	string 	Kod HTML kontrolki select
	 */
	function UserGrup($name, $default, $grup, $onchange=false, $value='name')
	{       
		$default = trim($default);
		$onchange = $onchange ? 'onchange="document.adminForm.submit( );"' : '';
		
		$db =& JFactory::getDBO();	
		
		$query = 'SELECT '.$value.' AS value, name AS text'
		. ' FROM #__users AS a'
		. ' WHERE (' .$grup.')'
		. ' AND a.registerDate = (SELECT max(registerDate) 
		                          FROM #__users
                                          WHERE pesel = a.pesel)'
                . ' AND a.del = 0'
                . ' ORDER BY text'
 		;
 		
		$db->setQuery( $query );
		$kier[] = JHTML::_('select.option',  '', '- Wybierz kierownika -' );
		foreach( $db->loadObjectList() as $obj ) {
			$kier[] = JHTML::_('select.option',  $obj->value, $obj->text );
		}

		return JHTML::_('select.genericlist_txt', $kier, $name, 'class="inputbox" size="1"'.$onchange, 'value', 'text', $default);
	}
	
	
	 /** 
	 * Metoda tworzy listę selekt archiwum
	 *
	 * @access 	public
	 * @param 	string 	$defaultSelect Domyślna wartość kontrolki
	 * @param 	string  $aktualne Nazwa aktualnych elementów
	 * @param 	string  $arch Nazwa archiwalnych elementów
	 * @return 	string 	Kod HTML kontrolki select o nazwie 'filter_del'
	 */
	function Arch($defaultSelect='', $aktualne, $arch)
	{       
		$del[] = JHTML::_('select.option',  0, '- '.$aktualne.' -');
		$del[] = JHTML::_('select.option',  1, $arch );
		return JHTML::_('select.genericlist',  $del, 'filter_del', 'class="inputbox" size="1" onchange="document.adminForm.submit( );"', 'value', 'text', "$defaultSelect" );
	}
	
	
	 /** 
	 * Metoda tworzy listę selekt typów urządzeń
	 *
	 * @access 	public
	 * @param 	string 	$name Nazwa kontrolki
	 * @param 	string 	$default Domyślna wartość kontrolki
	 * @param 	boolean $onchange true/false - po zmianie "selekta" wysyła/nie wysyła formularz
	 * @return 	string 	Kod HTML kontrolki select
	 */
	function TypUrzadzenia($name, $default='', $onchange=false)
	{       
		$onchange = $onchange ? 'onchange="document.adminForm.submit( );"' : '';
		
		$db =& JFactory::getDBO();	
		
		$query = 'SELECT name AS value, name AS text'
		. ' FROM #__typ_urzadz'
 		;
		$db->setQuery( $query );
		$typ_urzadz[] = JHTML::_('select.option',  '', '- Wybierz typ urządzenia -' );
		foreach( $db->loadObjectList() as $obj ) {
			$typ_urzadz[] = JHTML::_('select.option',  $obj->value, $obj->text );
		}
		return JHTML::_('select.genericlist',   $typ_urzadz, $name, 'class="inputbox" size="1"'.$onchange, 'value', 'text', $default);
	}

	
	 /** 
	 * Metoda tworzy listę selekt producentów
	 *
	 * @access 	public
	 * @param 	string 	$name Nazwa kontrolki
	 * @param 	string 	$default Domyślna wartość kontrolki
	 * @param 	boolean $onchange true/false - po zmianie "selekta" wysyła/nie wysyła formularz
	 * @return 	string 	Kod HTML kontrolki select
	 */
	function Producent( $name, $default='', $onchange=false)
	{       
		$onchange = $onchange ? 'onchange="document.adminForm.submit( );"' : '';

		$db =& JFactory::getDBO();
	
		$query = 'SELECT name AS value, name AS text'
		. ' FROM #__producenci AS a'
		. ' WHERE a.registerDate = (SELECT max(registerDate) 
		                            FROM #__producenci
                                            WHERE nrp = a.nrp)'
                . ' AND a.del = 0'
                . ' ORDER BY text'
 		;
		$db->setQuery( $query );
		$prod[] = JHTML::_('select.option',  '', '- Wybierz producenta -' );
		foreach( $db->loadObjectList() as $obj ) {
			$prod[] = JHTML::_('select.option',  $obj->value, $obj->text );
		}
		return JHTML::_('select.genericlist',   $prod, $name, 'class="inputbox" size="1"'.$onchange, 'value', 'text', $default);
	}

	
	 /** 
	 * Metoda tworzy listę selekt modeli
	 *
	 * @access 	public
	 * @param 	string 	$name Nazwa kontrolki
	 * @param 	string 	$default Domyślna wartość kontrolki
	 * @param 	boolean $onchange true/false - po zmianie "selekta" wysyła/nie wysyła formularz
	 * @return 	string 	Kod HTML kontrolki select
	 */
	function Model( $name, $default='', $onchange=false)
	{       
		$onchange = $onchange ? 'onchange="document.adminForm.submit( );"' : '';

		$db =& JFactory::getDBO();
	
		$query = 'SELECT n_mod AS value, n_mod AS text'
		. ' FROM #__modele AS a'
		. ' WHERE a.registerDate = (SELECT max(registerDate) 
		                            FROM #__modele
                                            WHERE nrm = a.nrm)'
                . ' AND a.del = 0'
                . ' ORDER BY text'
 		;
		$db->setQuery( $query );
		$mod[] = JHTML::_('select.option',  '', '- Wybierz model -' );
		foreach( $db->loadObjectList() as $obj ) {
			$mod[] = JHTML::_('select.option',  $obj->value, $obj->text );
		}
		return JHTML::_('select.genericlist', $mod, $name, 'class="inputbox" size="1"'.$onchange, 'value', 'text', $default);
	}
	

	 /** 
	 * Metoda tworzy listę selekt obiektów
	 *
	 * @access 	public
	 * @param 	string 	$name     Nazwa kontrolki
	 * @param 	string 	$default  Domyślna wartość kontrolki
	 * @param 	boolean $onchange true/false - po zmianie "selekta" wysyła/nie wysyła formularz
	 * @param 	string  $value 	  Wartość zwracana przez kontrolkę
	 * @param 	string  $check_default 	Ustawia wartość domyślna kontrolki po opcji value lub text	 
	 * @return 	string 	Kod HTML kontrolki select
	 */
	function Obiekt( $name, $default='', $onchange=false, $value='obiekt' , $check_default='txt', $nameForm='adminForm', $atrHTML='')
	{
		$default = trim($default);
		$onchange = $onchange ? 'onchange="document.'.$nameForm.'.submit( );"' : '';

		$db =& JFactory::getDBO();
		
 		$query = 'SELECT '.$value.' AS value, obiekt AS text'
		. ' FROM #__obiekty AS a'
		. ' WHERE a.registerDate = (SELECT max(registerDate) 
		                            FROM #__obiekty
                                            WHERE gid = a.gid)'
                . ' AND a.del = 0'
		. ' ORDER BY text'
 		;
		$db->setQuery( $query );
		$obiekt[] = JHTML::_('select.option',  '', '- Wybierz obiekt -' );
		foreach( $db->loadObjectList() as $obj ) {
			$obiekt[] = JHTML::_('select.option',  $obj->value, $obj->text );
		}
	
		if ($check_default == 'txt') 
			return JHTML::_('select.genericlist_txt', $obiekt, $name, 'class="inputbox" size="1"'.$onchange.$atrHTML, 'value', 'text', $default);
		else
			return JHTML::_('select.genericlist', $obiekt, $name, 'class="inputbox" size="1"'.$onchange.$atrHTML, 'value', 'text', $default);
	}
	
	/**
	 * Metoda tworzy listę selekt typów pojazdów
	 *
	 * @access 	public
	 * @param 	string 	$name Nazwa kontrolki
	 * @param 	string 	$default Domyślna wartość kontrolki
	 * @param 	boolean $onchange true/false - po zmianie "selekta" wysyła/nie wysyła formularz
	 * @return 	string 	Kod HTML kontrolki select
	 */
	function TypPoj( $name, $default='', $onchange=false)
	{       
		$onchange = $onchange ? 'onchange="document.adminForm.submit( );"' : '';

		$db =& JFactory::getDBO();
	
		$query = 'SELECT typ_pojazdu AS value, typ_pojazdu AS text'
		. ' FROM #__typ_pojazdu'
 		;
		$db->setQuery( $query );
		$typ[] = JHTML::_('select.option',  '', '- Typ pojazdu -' );
		foreach( $db->loadObjectList() as $obj ) {
			$typ[] = JHTML::_('select.option',  $obj->value, $obj->text );
		}
		return JHTML::_('select.genericlist', $typ, $name, 'class="inputbox" size="1"'.$onchange, 'value', 'text', $default);
	}
	
	/**
	 * Metoda tworzy listę selekt typów własności
	 *
	 * @access 	public
	 * @param 	string 	$name Nazwa kontrolki
	 * @param 	string 	$default Domyślna wartość kontrolki
	 * @param 	boolean $onchange true/false - po zmianie "selekta" wysyła/nie wysyła formularz
	 * @return 	string 	Kod HTML kontrolki select
	 */
	function TypWlas( $name, $default='', $onchange=false)
	{       
		$onchange = $onchange ? 'onchange="document.adminForm.submit( );"' : '';

		$db =& JFactory::getDBO();
	
		$query = 'SELECT typ_wlasnosci AS value, typ_wlasnosci AS text'
		. ' FROM #__typ_wlasnosci'
 		;
		$db->setQuery( $query );
		$typwlas[] = JHTML::_('select.option',  '', '- Wybierz typ własności -' );
		foreach( $db->loadObjectList() as $obj ) {
			$typwlas[] = JHTML::_('select.option',  $obj->value, $obj->text );
		}
		return JHTML::_('select.genericlist', $typwlas, $name, 'class="inputbox" size="1"'.$onchange, 'value', 'text', $default);
	}

	/**
	 * Metoda tworzy listę selekt ubezpieczycieli
	 *
	 * @access 	public
	 * @param 	string 	$name Nazwa kontrolki
	 * @param 	string 	$default Domyślna wartość kontrolki
	 * @param 	boolean $onchange true/false - po zmianie "selekta" wysyła/nie wysyła formularz
	 * @return 	string 	Kod HTML kontrolki select
	 */
	function Ubezp( $name, $default='', $onchange=false)
	{       
		$onchange = $onchange ? 'onchange="document.adminForm.submit( );"' : '';

		$db =& JFactory::getDBO();
	
		$query = 'SELECT ubezpieczyciel AS value, ubezpieczyciel AS text'
		. ' FROM #__ubezpieczyciel'
 		;
		$db->setQuery( $query );
		$ub[] = JHTML::_('select.option',  '', '- Ubezpieczyciel -' );
		foreach( $db->loadObjectList() as $obj ) {
			$ub[] = JHTML::_('select.option',  $obj->value, $obj->text );
		}
		return JHTML::_('select.genericlist', $ub, $name, 'class="inputbox" size="1"'.$onchange, 'value', 'text', $default);
	}
	
	 /** 
	 * Metoda tworzy listę selekt użytkowników pojazdów
	 *
	 * @access 	public
	 * @param 	string 	$name Nazwa kontrolki
	 * @param 	string 	$default Domyślna wartość kontrolki
	 * @param 	string 	$grup Określa którą grupę userów wylistujemy
	 *                              17 - Pracownik biurowy
	 *				18 - Uzytkownik samochodu
	 *				19 - Kierownik obiektu
	 *				20 - Kadry
	 *				21 - Księgowość
	 *				22 - Kierownik regionu
	 *				23 - Serwis
	 *				24 - Zarząd
	 *				25 - Administrator
	 *                              np. $grup określony: 'gid = 22' ozn. wylistowanie grupy kier. reg.
	 *				Grupy można łączyć np. 'gid = 22 OR gid = 19' ozn. grupy kier. reg. i obiektu
	 * @param 	boolean $onchange true/false - po zmianie "selekta" wysyła/nie wysyła formularz
	 * @return 	string 	Kod HTML kontrolki select
	 */
	function UserAuto($name, $default='', $grup, $onchange=false)
	{       
		$default = trim($default);
		$onchange = $onchange ? 'onchange="document.adminForm.submit( );"' : '';
		
		$db =& JFactory::getDBO();	
		
		$query = 'SELECT name AS value, name AS text'
		. ' FROM #__users AS a'
		. ' WHERE (' .$grup.')'
		. ' AND a.registerDate = (SELECT max(registerDate) 
		                          FROM #__users
                                          WHERE pesel = a.pesel)'
                . 'AND a.del = 0'
 		;
		$db->setQuery( $query );
		$uz[] = JHTML::_('select.option',  '', '- Osoba odpowiedzialna -' );
		foreach( $db->loadObjectList() as $obj ) {
			$uz[] = JHTML::_('select.option',  $obj->value, $obj->text );
		}
	return JHTML::_('select.genericlist', $uz, $name, 'class="inputbox" size="1"'.$onchange, 'value', 'text', $default);
	}
	
	 /** 
	 * Metoda tworzy pytań tak/nie
	 *
	 * @access 	public
	 * @param 	string 	$name Nazwa kontrolki
	 * @param 	string 	$default Domyślna wartość kontrolki
	 * @param 	boolean $onchange true/false - po zmianie "selekta" wysyła/nie wysyła formularz
	 * @return 	string 	Kod HTML kontrolki select
	 */
	function Quest( $name, $default='', $onchange=false, $textPoczatkowy='Wybierz')
	{       
		$default = trim($default);
		$onchange = $onchange ? 'onchange="document.adminForm.submit( );"' : '';

		$db =& JFactory::getDBO();
		
 		$query = 'SELECT id AS value, odp AS text'
		. ' FROM #__quest'
 		;
		$db->setQuery( $query );
		$que[] = JHTML::_('select.option',  '', '- '.$textPoczatkowy.' -' );
		foreach( $db->loadObjectList() as $obj ) {
			$que[] = JHTML::_('select.option',  $obj->value, $obj->text );
		}
		return JHTML::_('select.genericlist', $que, $name, 'class="inputbox" size="1" '.$onchange, 'value', 'text', $default);
	}
	
	/** 
	 * Metoda tworzy select typów maszyn
	 *
	 * @access 	public
	 * @param 	string 	$name Nazwa kontrolki
	 * @param 	string 	$default Domyślna wartość kontrolki
	 * @param 	boolean $onchange true/false - po zmianie "selekta" wysyła/nie wysyła formularz
	 * @return 	string 	Kod HTML kontrolki select
	 */
	function TypMasz( $name, $default='', $onchange=false)
	{       
		$default = trim($default);
		$onchange = $onchange ? 'onchange="document.adminForm.submit( );"' : '';

		$db =& JFactory::getDBO();
		
 		$query = 'SELECT typ AS value, typ AS text'
		. ' FROM #__typ_m'
 		;
		$db->setQuery( $query );
		$typmasz[] = JHTML::_('select.option',  '', '- Typ maszyny -' );
		foreach( $db->loadObjectList() as $obj ) {
			$typmasz[] = JHTML::_('select.option',  $obj->value, $obj->text );
		}
		return JHTML::_('select.genericlist', $typmasz, $name, 'class="inputbox" size="1"'.$onchange, 'value', 'text', $default);
	}

	
	/** 
	 * Metoda tworzy dowolną listę selekt
	 *
	 * @access 	public
	 * @param 	string 	$nameKontrolki 		Nazwa kontrolki
	 * @param 	string 	$txtextPoczatkowy	Tekst początkowy
	 * @param 	array 	$query			Zapytanie SQL	 
	 * @param 	string 	$default 		Domyślna wartość kontrolki
	 * @param 	boolean $onchange 		true/false - po zmianie "selekta" wysyła/nie wysyła formularz
	 * @param 	string  $value 			wartość zwracana przez kontrolkę (wartość musi mieć odpowiednik w nazwie pola tabeli)
	 * @param 	string  $text 			tekst wyświetlany przez kontrolkę (tekst musi mieć odpowiednik w nazwie pola tabeli)	 
	 * @return 	string 	Kod HTML kontrolki select
	 */
	function selekt( $nameKontrolki, $textPoczatkowy, $query, $default='', $onchange=false, $value='value', $text='text', $nameForm='adminForm', $check_default='vol')
	{       
		$default = trim($default);
		$onchange = $onchange ? 'onchange="document.'.$nameForm.'.submit( );"' : '';

		$db =& JFactory::getDBO();
		$db->setQuery( $query );
		$rows = $db->loadObjectList();

		$ob[] = JHTML::_('select.option',  '', '- '.$textPoczatkowy.' -' );
		foreach( $rows as $obj ) {
			// Wartości puste nie dołączamy do selekta
			if ($obj->$text == '') continue;
			$ob[] = JHTML::_('select.option',  htmlspecialchars($obj->$value), htmlspecialchars($obj->$text));
		}
		if ($check_default == 'vol') {
			return JHTML::_('select.genericlist', $ob, $nameKontrolki, 'class="inputbox" size="1"'.$onchange, 'value', 'text', htmlspecialchars ($default));
		} else {			
			return JHTML::_('select.genericlist_txt', $ob, $nameKontrolki, 'class="inputbox" size="1"'.$onchange, 'value', 'text', htmlspecialchars ($default));
		}
	}

}
